using System;

namespace Microsoft.SqlServer.Tools.PublishWizard.CommandLine
{
	[AttributeUsage(AttributeTargets.Property)]
	internal sealed class ArgumentAttribute : Attribute
	{
		private string shortName;

		private string longName;

		private string helpText;

		private object defaultValue;

		private ArgumentTypes type;

		private string helpTopic;

		private string argumentHelpText;

		private bool _isDefaultArgument;

		private Type _elementType;

		private short _maxNumberOfArguments;

		public ArgumentTypes Type
		{
			get
			{
				return this.type;
			}
		}

		public bool DefaultShortName
		{
			get
			{
				return null == this.shortName;
			}
		}

		public string ShortName
		{
			get
			{
				return this.shortName;
			}
			set
			{
				this.shortName = value;
			}
		}

		public bool DefaultLongName
		{
			get
			{
				return null == this.longName;
			}
		}

		public string LongName
		{
			get
			{
				return this.longName;
			}
			set
			{
				this.longName = value;
			}
		}

		public object DefaultValue
		{
			get
			{
				return this.defaultValue;
			}
			set
			{
				this.defaultValue = value;
			}
		}

		public bool HasDefaultValue
		{
			get
			{
				return null != this.defaultValue;
			}
		}

		public bool HasHelpText
		{
			get
			{
				return null != this.helpText;
			}
		}

		public string HelpText
		{
			get
			{
				return this.helpText;
			}
			set
			{
				this.helpText = CommandLineResources.ResourceManager.GetString(value);
			}
		}

		public string ArgumentHelpText
		{
			get
			{
				return this.argumentHelpText;
			}
			set
			{
				this.argumentHelpText = CommandLineResources.ResourceManager.GetString(value);
			}
		}

		public string HelpTopic
		{
			get
			{
				return this.helpTopic;
			}
			set
			{
				this.helpTopic = CommandLineResources.ResourceManager.GetString(value);
			}
		}

		public short MaxNumberOfArguments
		{
			get
			{
				return this._maxNumberOfArguments;
			}
			set
			{
				this._maxNumberOfArguments = value;
			}
		}

		public bool IsDefaultArgument
		{
			get
			{
				return this._isDefaultArgument;
			}
			set
			{
				this._isDefaultArgument = value;
			}
		}

		public Type ElementType
		{
			get
			{
				return this._elementType;
			}
			set
			{
				this._elementType = value;
			}
		}

		public ArgumentAttribute(ArgumentTypes type)
		{
			this.type = type;
		}
	}
}
